/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.marcelo.agro.totales.util;

import java.util.Collection;
import java.util.List;
import org.marcelo.agro.core.api.ITotales;
import org.marcelo.agro.entidades.Campanas;
import org.marcelo.agro.entidades.Lotes;
import org.marcelo.agro.entidades.LotesPorCampana;
import org.marcelo.agro.entidades.TipoActividad;
import org.marcelo.agro.entidades.noadministrados.Estadisticas;
import org.openide.util.Lookup;

/**
 *
 * @author marcelo
 * La idea de esta clase es poder realizar las tareas comunes a todos los graficos
 * como ser la obtencion de datos y su formateo a travez de esta misma clase
 */
public class TotalesUtil {
    
    private static ITotales it = Lookup.getDefault().lookup(ITotales.class);
    
    /**
     * Metodo para obtener las estadisticas de gastos para un Lote
     * @param lotesPorCampanas la asociasion del Lote y la Campania
     * @return Una lista de Estadisticas agrupadas por un tipo de Actividad
     */
    public static List<Estadisticas<TipoActividad> > getEstadisticasLote(Collection<? extends LotesPorCampana> lotesPorCampanas) {
        List<Estadisticas<TipoActividad> > result = null;
        if (lotesPorCampanas != null && !lotesPorCampanas.isEmpty()) {
            for (LotesPorCampana lotesPorCampana : lotesPorCampanas) {
                result = it.getTotales(
                        lotesPorCampana.getCampanas(), lotesPorCampana.getLotes()
                );
            }  
        }
        return result;
    }
    
    /**
     * Metodo para obtener las estadisticas de gasto para una campania
     * @param listCampanias la lista de campananias
     * @return  Una lista de estadisticas agrupadas por un tipo de Actividad
     */
    public static  List<Estadisticas<Lotes> > getEstadisticasCampania(Collection<? extends Campanas> listCampanias) {
        List<Estadisticas<Lotes>> result = null;
        if (listCampanias!= null && !listCampanias.isEmpty()){
            for(Campanas c: listCampanias){
                result = it.getTotales(c);
            }
        }
        
        return result;
    
    }
    
    /**
     * En los graficos tengo problemas cuando los montos superan el millon,
     * tarda demasiado en renderizar y ocupa muchisima memoria
     * en situaciones limites primero debo saber si superan el millon, caso afirmativo
     * realizar una division y retormar los valores
     * 
     */
    
    
    
    
    
}
